#ifndef _INTERPOLATION_H_
#define _INTERPOLATION_H_

#include "Eigen/Dense"
#include "Eigen/Sparse"
#include "Mode.h"

typedef Eigen::VectorXd (*restriction_fun)(Operators::Restriction, const Eigen::VectorXd &);
typedef Eigen::VectorXd (*prolongate_fun)(Operators::Interpolation, const Eigen::VectorXd &);

namespace DIM_NAMESPACE(One)
{
	Eigen::VectorXd Restriction(Operators::Restriction ope, const Eigen::VectorXd &v);
	Eigen::VectorXd Prolongate(Operators::Interpolation ope, const Eigen::VectorXd &v);
}

namespace DIM_NAMESPACE(Two)
{
	Eigen::VectorXd Restriction(Operators::Restriction ope, const Eigen::VectorXd &v);
	Eigen::VectorXd Prolongate(Operators::Interpolation ope, const Eigen::VectorXd &v);
}

#endif